package com.hundun.tt_pay.pay.controller;


import com.hundun.tt_pay.src.main.java.com.bytedance.caijing.tt_pay.TTPayLog;
import com.hundun.tt_pay.src.main.java.com.bytedance.caijing.tt_pay.TTPayService;
import com.hundun.tt_pay.src.main.java.com.bytedance.caijing.tt_pay.model.TradeCreateRequest;
import com.hundun.tt_pay.src.main.java.com.bytedance.caijing.tt_pay.model.TradeCreateResponse;

/**
 *支付创建
 * @author 谢
 */
public class TradeCreateDemo {
    public static void main(String[] args) {
        //log级别可配置为 debug，info，warn，error
        TTPayLog.logLevel = TTPayLog.LogLevel.debug;
        //支付方分配给业务方的ID，用于获取 签名/验签 的密钥信息
        TTPayService.appId = "800132952142";
        //支付方密钥
        TTPayService.appSecret = "4penpsspn4a5y2uw70gw8zfm37qn9my828cv48ys";
        //支付方分配给业务方的商户编号
        TTPayService.merchantId = "1900013295";
        // 测试请用https://tp-pay-test.snssdk.com, 线上请用https://tp-pay.snssdk.com
        TTPayService.tpDomain = "https://tp-pay.snssdk.com";
        TradeCreateRequest request = TradeCreateRequest.builder()

                // 下面两个版本号，AppletVersion指的是小程序收银台版本，Version指的是财经后端下单接口版本
                // 小程序收银台版本有1.0和2.0，头条APP只在7.2.7之后支持收银台2.0版本，7.2.7之前的版本请使用1.0
                // 该参数可设置为"1.0"(返回拉起1.0收银台参数)，"2.0"(返回拉起2.0收银台参数),"2.0+"(返回一个json，包含1.0和2.0参数)
                // 小程序收银台版本，可选1.0，2.0及2.0+
                .appletVersion("2.0+")
                // 后端下单接口默认为2.0， 可更改为1.0
                .version("2.0")
                // 此处是随机生成的，使用时请填写您的商户订单号
                .outOrderNo("" + System.currentTimeMillis())
                // 填写用户在头条的uid
                .uid("123")
                // 填写订单金额
                .totalAmount(1L)
                // 填写币种，一般均为CNY
                .currency("CNY")
                // 填写您的订单名称
                .subject("测试订单")
                // 填写您的订单内容
                .body("测试订单内容")
                // 交易时间，此处自动生成，您也可以根据需求赋值，但必须为Unix时间戳
                .tradeTime("" + System.currentTimeMillis() / 1000)
                // 填写您的订单有效时间（单位：秒）
                .validTime("3600")
                // 填写您的异步通知地址
                .notifyUrl("http://www.baidu.com")
                // 严格json字符串格式
                .riskInfo("{\"ip\":\"127.0.0.1\", \"device_id\":\"122333\"}")
                // 固定值，不要改动
                .productCode("pay")
                // 固定值，不要改动
                .tradeType("H5")

                // 1.0版本特有参数，当AppletVersion填"1.0"和"2.0+"时需要填写
                // 传递给支付方的支付信息，不同的支付方参数格式不一样
                .params("...")
                // 1.0版本的PayType，目前只支持支付宝，请填写ALIPAY_APP
                .payType("ALIPAY_APP")
                // 目前只支持支付宝，请填写ALIPAY_NO_SIGN
                .payChannel("ALIPAY_NO_SIGN")

                // 2.0版本特有参数，当AppletVersion填"2.0"和"2.0+"时需要填写
                // 2.0版本的PaymentType，固定值direct，不要改动
                .paymentType("direct")
                // 调用微信H5支付统一下单接口返回的mweb_url字段值。service=1时(外部开发者)必传，否则无法使用微信支付; 内部用户该参数不用传
                .wxUrl("")
                // service=1时(外部开发者)，且wx_url有值时，传固定值：MWEB; 内部用户该参数不用传
                .wxType("")
                // 调用支付宝App支付的签名订单信息，详见支付宝App支付请求参数说明。service=1时(外部开发者)必传，否则无法使用支付宝支付; 内部用户该参数不用
                .alipayUrl("")
                .build();
        try {
            TradeCreateResponse response = TTPayService.TradeCreate(request);
            String appletParams = response.getAppletParams();
            System.out.println("Get Cashdesk Parameters: " + appletParams);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
